<?php
/**
 * 百度鹰眼 service 接口类
 */
class LbsService extends LbsApiBasic 
{
	public function __construct($service_id=0){
		parent::__construct('service');
		if($service_id>0){
			$this->setServiceId($service_id);
		}
	}
	
	/**
	 * 新增一种service服务（一类track），输入包含对service服务的描述信息，返回service的唯一标记。
	 *
	 * @param String $name service服务名称
	 * @param String $desc service服务描述
	 * @param Int $type service服务的类型 可选。默认值为0代表其他行业。车辆管理行业（1）、MTK位置穿戴（2）、O2O配送行业（3）、位置智能穿戴（4）
	 * @return Array
	 */
	public function create($name,$desc,$type=0)
	{
		$data = array('name'=>$name,'desc'=>$desc,'type'=>$type);
		$this->setServiceId();
		$res = $this->post('create',$data);
		return $res;
	}
	
	/**
	 * 删除一个service服务，删除后自动删除service下所有track数据。
	 *
	 * @param Int $service_id
	 * @return Array
	 */
	public function delete($service_id)
	{
		$this->setServiceId($service_id);
		if($res = $this->post('delete')){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * Service服务的详细信息，包括service的name，desc等描述信息和本类service服务拥有的详细字段信息（例如：tracks的经纬度，地址，tags，创建时间）等。
	 *
	 * @param Int $service_id
	 * @return Array
	 */
	public function detail($service_id)
	{
		$this->setServiceId($service_id);
		if($res = $this->get('detail')){
			return $res['service'];
		}else{
			return false;
		}
	}
	
	/**
	 * 列举用户的所有service服务（可指定service名称中包含关键字，翻页信息），返回包括返回条数，总条数和返回的具体service信息（仅包含service描述信息，name，desc，等）。
	 *
	 * @param String $name Trace的name中包含的关键字,可选，Name中包含的字符串，不需要完全匹配
	 * @param Int $page
	 * @param Int $pagesize
	 * @return Array
	 */
	public function serviceList($name='',$page=1,$pagesize=100)
	{
		$data = array('name'=>$name,'page_size'=>$pagesize,'page_index'=>$page);
		return $this->get('list',$data);
	}
	
	/**
	 * 更新service信息，仅包括service的名称(name)和描述信息(desc)，具体字段增减修改操作放在属性增、删、改操作中进行。
	 *
	 * @param Int $service_id
	 * @param String $name service名称，同一个user下须保持唯一
	 * @param String $desc
	 * @return Boolean
	 */
	public function update($service_id=0,$name,$desc)
	{
		$data = array('name'=>$name,'desc'=>$desc);
		if($service_id > 0){
			$this->setServiceId($service_id);
		}
		if($res = $this->post('update',$data)){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 为service服务增加属性列的操作。
	 *
	 * @param Array $column
	 *  column_name	column的属性中文名称	string(0-45)	必选
		column_key	column存储的属性key	string(1-45)	必选，同一个geotable内的名字不能相同
		column_type	存储的值的类型	Int(1-4)	必选，枚举值1:Int64, 2:double, 3:string, 4:在线图片url
		max_length	最大长度	Int(1-2048)	Type=3时必选，最大值2048，最小值为1，此值代表utf8的汉字个数，不是字节个数
		default_value	默认值
	 */
	public function addcolumn($column)
	{
		if($res = $this->post('addcolumn',$column)){
			return $res['column_id'];
		}else{
			return false;
		}
	}
	
	/**
	 * 对一个service服务的某个属性列进行删除操作。
	 *
	 * @param Int $column_id
	 * @return Boolean
	 */
	public function delColumn($column_id)
	{
		$data = array('column_id'=>$column_id);
		if($res = $this->post('delColumn',$data)){
			return true;
		}else{
			return false;
		}
	}
	
	/**
	 * 更新service的某个属性的操作。
	 *
	 * @param Array $data
	 * @return Boolean
	 */
	public function updatecolumn($data)
	{
		if($res = $this->post('updatecolumn',$data)){
			return true;
		}else{
			return false;
		}		
	}
}
?>